package com.cs.service.image;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSClientBuilder;
import com.cs.service.image.ImageService;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.UUID;

/**
 * OSS存储
 */
//@Service
//public class ImageServiceImpl implements ImageService {
//    @Override
//    public String uploadFileAvatar(MultipartFile file) throws Exception{
//
//        // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
//        String accessId = "LTAI5t9Z4U8YjJvappt2h34K";
//        String accessKey = "CyfLqLCuqbIVR4lvVstPn04rELk5TY";
//// Endpoint以华东1（杭州）为例，其它Region请按实际情况填写。
//        String endpoint = "oss-cn-shanghai.aliyuncs.com";
//// 填写Bucket名称，例如examplebucket。
//        String bucket = "cs-test-demo";
//// 填写Host地址，格式为https://bucketname.endpoint。
//        String host = "http://oss-cn-shanghai.aliyuncs.com";
//// 设置上传回调URL，即回调服务器地址，用于处理应用服务器与OSS之间的通信。OSS会在文件上传完成后，把文件上传信息通过此回调URL发送给应用服务器。
//        String callbackUrl = "192.168.18.113:8080";
//// 设置上传到OSS文件的前缀，可置空此项。置空后，文件将上传至Bucket的根目录下。
//        String dir = "imgdir/";
//
////        String endpoint = "oss-cn-shanghai.aliyuncs.com";
////        String accessKeyId = "LTAI5t9Z4U8YjJvappt2h34K";
////        String accessKeySecret ="CyfLqLCuqbIVR4lvVstPn04rELk5TY";
////        String bucketName = "cs-oss";
//        String url = null;
//
//        System.out.println(file+"+++++++++++++++++++++");
//
//        //创建OSSClient实例。
//        OSS ossClient = new OSSClient(endpoint, accessId, accessKey);
//
//        //获取上传文件输入流
//        InputStream inputStream = file.getInputStream();
//        //获取文件名称
//        String fileName = file.getOriginalFilename();
//
//        //保证文件名唯一，去掉uuid中的'-'
//        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
//        fileName = uuid + fileName;
//
//        //把文件按日期分类，构建日期路径：avatar/2019/02/26/文件名
//        //String datePath = new Date().toString("yyyy/MM/dd");
////        String datePath = "2023";
//        //拼接
////        fileName = datePath + "/" + fileName;
//
//        //调用oss方法上传到阿里云
//        //第一个参数：Bucket名称
//        //第二个参数：上传到oss文件路径和文件名称
//        //第三个参数：上传文件输入流
//        ossClient.putObject(bucket, fileName, inputStream);
//
//        //把上传后把文件url返回
//        //https://xppll.oss-cn-beijing.aliyuncs.com/01.jpg
//        url = "https://" + bucket + "." + endpoint + "/" + fileName;
//        //关闭OSSClient
//        ossClient.shutdown();
//
//        return url;
//
//    }
//}
@Service
public class ImageServiceImpl implements ImageService{

    @Override
    public ArrayList<String> uploadFileAvatar(MultipartFile[] files) throws Exception {
        ArrayList<String> imagesList = new ArrayList<>();
        // 指定文件存储的本地路径
        String filePath = "D:/csDemoImage"; // 注意这里的路径可以直接使用 / 正斜杠拼接
        // 如果目录不存在，创建目录
        File directory = new File(filePath);
        if (!directory.exists()){
            directory.mkdirs();
        }
        for (MultipartFile file : files) {
            // 获取文件名
            String fileName = file.getOriginalFilename();
            // 指定本地文件
            String localFilePath = filePath + "/" + fileName; // 注意要用\\反斜杠进行连接
            File localFile = new File(localFilePath);
            try {
                // 写入本地文件
                file.transferTo(localFile);
                imagesList.add(fileName);
                System.out.println("文件上传成功！文件名：" + fileName);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return imagesList;
    }

//    @Override
//    public ArrayList<String> updateFileImg(MultipartFile[] files) throws Exception {
//        ArrayList<String> imagesList = new ArrayList<>();
//        // 指定文件存储的本地路径
//        String filePath = "D:/csDemoImage"; // 注意这里的路径可以直接使用 / 正斜杠拼接
//        // 如果目录不存在，创建目录
//        File directory = new File(filePath);
//        if (!directory.exists()){
//            directory.mkdirs();
//        }
//        for (MultipartFile file : files) {
//            // 获取文件名
//            String fileName = file.getOriginalFilename();
//
//            System.out.println(fileName+"**********99999************");
//
//            System.out.println(file.isEmpty());
//            System.out.println(file.getContentType()+"-------888888888+------");
//            // 指定本地文件
//            String localFilePath = filePath + "/" + fileName; // 注意要用\\反斜杠进行连接
//            File localFile = new File(localFilePath);
////            try {
////                // 写入本地文件
////                file.transferTo(localFile);
////                imagesList.add(fileName);
////                System.out.println("文件上传成功！文件名：" + fileName);
////            } catch (IOException e) {
////                e.printStackTrace();
////            }
//        }
//
//        return imagesList;
//    }


}
